#ifndef _UNIONFIND_H
#define _UNIONFIND_H

#include <stdint.h>

typedef struct union_find union_find_t;
struct union_find {

    uint32_t (*get_set_size)(union_find_t *uf, uint32_t idx);
    uint32_t (*get_rep)(union_find_t *uf, uint32_t idx);
    uint32_t (*connect)(union_find_t *uf, uint32_t ida, uint32_t idb);

    uint32_t * data;
    uint32_t sz;
};

union_find_t * union_find_init(const uint32_t sz);
void union_find_destroy(union_find_t * uf);

#endif
